# 字符集和bytes
# 把字符串转化为字节：
bs = "我的天哪abcdef".encode("utf-8")
print(bs);  # b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
# 一个中文在utf-8中是3个字节，一个英文是一个字节，所以英文字母是正常显示的，

# 把字节还原成字符串
bs = b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
s = bs.decode("utf-8")
print(s)  # 我的天哪abcdef

# 全球统一编码：unicode，unicode是没办法在网络通信和传输过程中使用的，32bit，大量浪费，可固定寻址
# unicode是在内存上执行的，是不会写在硬盘中的
# 为保证数据的传输和存储，发明了可变长度的unicode，就是utf
# utf-8，最小的一个字符长度是8bit，1byte
# utf-16，最小的一个字符长度是16bit，2byte
# utf-32，最小的一个字符长度是32bit，4byte
# 有各自的转化规则
# 总结：
# ascii: 1byte  8bit
# gbk: 2byte  16bit
# utf-8: ascii范围的东西：1byte，8bit    欧洲文字：2byte，16bit    中文：3byte，24bit
# 所以3个字，gbk为6字节，utf-8为9字节


# 文件操作
# mode="w" 如果文件存在会清空，相当于覆盖写入，不存在则创建
# f = open("123.txt", mode="w", encoding="utf-8")
# f.close()
# r 只读， a 追加

f = open("123.txt", mode="a", encoding="utf-8")
f.write("xxx")  # 这块逻辑基本和Qt里的相似
f.close()

# 如何拷贝一个文件（图片、mp4、MP3、zip）
# b：读写的是字节，就没有编码逻辑了，用with打开，无需手动close,所以也就无法给出encoding参数
with open("aaa.jpg", mode="rb") as f1, \
        open("bbb.jpg", mode="wb") as f2:
    content = f1.read()
    f2.write(content)

# 读取文件中一行一行的数据：
with open("123.txt", mode="r", encoding="utf-8") as f:
    for line in f:  # for循环可以逐行的进行循环文件中的内容
        line = line.strip()  # 例如line = https://baidu.com/121  去除后面的换行符
        print(line)

print("111", end="")  # 这样就可以不换行了


# 关于函数：
# 无返回值：
def test1(url, xpath):
    x = url
    path = xpath
    pass


# 有返回值
def test2():
    result = [1, 2, 3, 4]
    return result





